This is a suite of sensitivity experiments testing the sensitivity of alpha, gamma and b1.
Experiment 23:
alpha = 8; gamma = 0.8; b1 = 4
/glade/u/home/jet/cases/g.e11.GIAF.T62_gx1v6.steer.023
Experiment 24:
alpha = 8; gamma = 0.8; b1 = 1
/glade/u/home/jet/cases/g.e11.GIAF.T62_gx1v6.steer.024
Experiment 25:
alpha = 8; gamma = 0.35; b1 = 1
/glade/u/home/jet/cases/g.e11.GIAF.T62_gx1v6.steer.025
Notes:
In our simulations, we use gamma = 1.75. If we stick with the definition of gamma given in the Appendix of Bates et al. (2014), gamma represents mixing efficiency and cannot exceed 1. However, we can interpret it as const * gamma where we have introduced a scaling constant (const).
There is also some very sensitive relationship between b1 and gamma as shown in the paragraph just below A6b.
POP standard diagnostics for the experiments
Experiment 23:
Experiment 24:
Experiment 25:
Comparison of Relavant fields
The fields which are affected by alpha, b1 and gamma are:
\(u_{rms} = alpha*{\sigma_{vi}}*L_{eddy}\)
\(u_{rms}^2\)
\({(U-c)}^2 \over {u_{rms}^2}\)
\({Suppression \quad factor = {1 \over (1 + b1 * |\bar u - c|^2 /u_{rms (z=0)}^2 )}}\)
\({K}=u_{rms}∗{\Gamma * L_{eddy} \over (1 + b1 * |u_{mean} - c|^2 /u_{rms}^2 (z=0)}\)
\(\color{green}{Comparing \quad RMS \quad eddy \quad velocity}\quad \color{red}{u_{rms}}\)
NOTES:
Alpha was changed to 8.0 for all three sensitivity experiments. It will be compared to the 018 control run and Bate's et al.
\(u_{rms} = alpha*{\sigma_{vi}}*L_{eddy}\)
- alpha (scaling constant) = 8
\(\sigma_{vi} = {f \over \sqrt{R_i}}\quad = \quad {f \over \sqrt{{f^2N^2 \over m^4}}}\quad = \quad {{\cancel f m^2} \over \cancel f N}\)
\(u_{rms}\) is limited to 5 cm/s $ max(u_{rms},5.)$
\(\quad\quad\quad\quad\quad\quad\quad\) Eddy Velocity \((u_{rms})\quad\) CESM
# <!-- collapse=True -->
alpha_18=4
alpha_23=8
alpha_24=8
alpha_25=8
b1_18=4
b1_23=4
b1_24=1
b1_25=1
gamma_18=1.75
gamma_23=.8
gamma_24=.8
gamma_25=.35
alpha=alpha_23
b1=b1_23
gamma=gamma_23
cm2m=.01
#
urms_avg123 = nc23.variables['URMS_AVG1'][0,0,:,:]
urms_avg1_nearest23 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg123,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_mps23=urms_avg1_nearest23*cm2m
clevs=np.linspace(0,.4,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_mps23,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 023 $u_{rms} ({m \over s})$ using new sigma (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2f/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_mps23.max(),urms_avg1_mps23.min(),urms_avg1_mps23.mean()))
#customize colorbar ticks
yticks=[0,.1,.2,.3,.4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.32])
pylab.xticks([0,.1,.2,.3]);
alpha=alpha_24
b1=b1_24
gamma=gamma_24
urms_avg124 = nc24.variables['URMS_AVG1'][0,0,:,:]
urms_avg1_nearest24 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg124,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_mps24=urms_avg1_nearest24*cm2m
clevs=np.linspace(0,.4,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_mps24,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 024 $u_{rms} ({m \over s})$ using new sigma (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2f/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_mps24.max(),urms_avg1_mps24.min(),urms_avg1_mps24.mean()))
#customize colorbar ticks
yticks=[0,.1,.2,.3,.4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.32])
pylab.xticks([0,.1,.2,.3]);
alpha=alpha_25
b1=b1_25
gamma=gamma_25
urms_avg125 = nc25.variables['URMS_AVG1'][0,0,:,:]
urms_avg1_nearest25 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg125,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_mps25=urms_avg1_nearest25*cm2m
clevs=np.linspace(0,.4,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_mps25,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 025 $u_{rms} ({m \over s})$ using new sigma (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2f/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_mps25.max(),urms_avg1_mps25.min(),urms_avg1_mps25.mean()))
#customize colorbar ticks
yticks=[0,.1,.2,.3,.4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.32])
pylab.xticks([0,.1,.2,.3]);
alpha=alpha_18
b1=b1_18
gamma=gamma_18
urms_avg1_18 = nc18.variables['URMS_AVG1'][0,0,:,:]
urms_avg1_18_nearest = pyresample.kd_tree.resample_nearest(orig_def, urms_avg1_18,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_18_mps=urms_avg1_18_nearest*cm2m
clevs=np.linspace(0,.4,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_18_mps,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Control run 018 $u_{rms}$ (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2f/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_18_mps.max(),urms_avg1_18_mps.min(),urms_avg1_18_mps.mean()))
#customize colorbar ticks
yticks=[0,.1,.2,.3,.4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.32])
pylab.xticks([0,.1,.2,.3]);
\(\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad u_{rms} \) Bates et al
# <!-- collapse=True -->
bates_urms=Image(filename=basedir+'/steering/bates2013-urms.png')
display(bates_urms)
\(\color{green}{u_{rms}^2 \quad Term} \quad\)
NOTES:
- \(K={u_{rms}}∗{\Gamma * L_{eddy} \over (1 + b1 * |u_{mean} - c|^2 /\color{red}{u_{rms}^2} (z=0)} \)
- \(u_{rms}^2\) is a surface value
#### <!-- collapse=True -->
urms_avg1_sq23 = nc23.variables['URMS_AVG1_SQ'][0,0,:,:]
urms_avg1_sq_nearest23 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg1_sq23,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_sq_mps23=urms_avg1_sq_nearest23*1.e-4
###urms_avg1_sq_mps =urms_avg1_mps*urms_avg1_mps
alpha=alpha_23
b1=b1_23
gamma=gamma_23
##clevs=np.linspace(0,.06,40)
clevs=np.linspace(.001,.12,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_sq_mps23,
addzonal=True,
levels1=clevs,
setover='darkred',
setunder='darkblue',
figsize=(14,5),
title="Run 023 $u_{rms}^2$ (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2G/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_sq_mps23.max(),urms_avg1_sq_mps23.min(),urms_avg1_sq_mps23.mean()))
#customize colorbar ticks
yticks=[.001,.02,.04,.06,.08,.10,.12]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.08])
pylab.xticks([0,.03,.06,.12]);
urms_avg1_sq24 = nc24.variables['URMS_AVG1_SQ'][0,0,:,:]
urms_avg1_sq_nearest24 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg1_sq24,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_sq_mps24=urms_avg1_sq_nearest24*1.e-4
###urms_avg1_sq_mps =urms_avg1_mps*urms_avg1_mps
alpha=alpha_24
b1=b1_24
gamma=gamma_24
##clevs=np.linspace(0,.06,40)
clevs=np.linspace(.001,.12,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_sq_mps24,
addzonal=True,
levels1=clevs,
setover='darkred',
setunder='darkblue',
figsize=(14,5),
title="Run 024 $u_{rms}^2$ (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2G/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_sq_mps24.max(),urms_avg1_sq_mps24.min(),urms_avg1_sq_mps24.mean()))
#customize colorbar ticks
yticks=[.001,.02,.04,.06,.08,.10,.12]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.12])
pylab.xticks([0,.03,.06,.12]);
urms_avg1_sq25 = nc25.variables['URMS_AVG1_SQ'][0,0,:,:]
urms_avg1_sq_nearest25 = pyresample.kd_tree.resample_nearest(orig_def, urms_avg1_sq25,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_sq_mps25=urms_avg1_sq_nearest25*1.e-4
###urms_avg1_sq_mps =urms_avg1_mps*urms_avg1_mps
alpha=alpha_25
b1=b1_25
gamma=gamma_25
##clevs=np.linspace(0,.06,40)
clevs=np.linspace(.001,.12,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_sq_mps25,
addzonal=True,
levels1=clevs,
setover='darkred',
setunder='darkblue',
figsize=(14,5),
title="Run 025 $u_{rms}^2$ (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2G/min = %.2G/mean = %.2G) "%(alpha,b1,gamma,urms_avg1_sq_mps25.max(),urms_avg1_sq_mps25.min(),urms_avg1_sq_mps25.mean()))
#customize colorbar ticks
yticks=[.001,.02,.04,.06,.08,.10,.12]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.12])
pylab.xticks([0,.03,.06,.12]);
urms_avg1_sq_18 = nc18.variables['URMS_AVG1_SQ'][0,0,:,:]
urms_avg1_sq_18_nearest = pyresample.kd_tree.resample_nearest(orig_def, urms_avg1_sq_18,
targ_def0, radius_of_influence=500000, fill_value=None)
urms_avg1_sq_18_mps=urms_avg1_sq_18_nearest*1.e-4
###urms_avg1_sq_mps =urms_avg1_mps*urms_avg1_mps
alpha=alpha_18
b1=b1_18
gamma=gamma_18
##clevs=np.linspace(0,.06,40)
clevs=np.linspace(.001,.12,40)
fig,ax,cbar=MapContourg(targ_def0,urms_avg1_sq_18_mps,
addzonal=True,
levels1=clevs,
setover='darkred',
setunder='darkblue',
figsize=(14,5),
title="Control run 018 $u_{rms}^2$ (alpha/b1/gamma= %.1f/%.1f/%.1f/,max = %.2G/min = %.2G) "%(alpha,b1,gamma,urms_avg1_sq_18_mps.max(),urms_avg1_sq_18_mps.min()))
#customize colorbar ticks
yticks=[.001,.02,.04,.06,.08,.10,.12]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.12])
pylab.xticks([0,.03,.06,.12]);
\(\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad u_{rms}^2 \) Bates et al
# <!-- collapse=True -->
urms_bates=Image(filename=basedir+'/steering/Bates_urms_sq.jpg')
display(urms_bates)
\(\quad\quad\quad\quad\quad\quad\) \({(U-c)}^2 \over {u_{rms}^2} \quad\) CESM
# <!-- collapse=True -->
umc2ourms2 = nc23.variables['UMCSQ_OVR_URMSSQ'][0,0,:,:]
umc2ourms2_nearest = pyresample.kd_tree.resample_nearest(orig_def,umc2ourms2 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=arange(0,5,.1)
fig,ax,cbar=MapContourg(targ_def0,umc2ourms2_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,4),
setover='darkred',
setunder='darkblue',
title="Run 023 ${(U-c)}^2 \over u_{rms}^2$")
#customize colorbar ticks
yticks=[0,2,4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,8])
pylab.xticks([0,4,8]);
umc2ourms2 = nc24.variables['UMCSQ_OVR_URMSSQ'][0,0,:,:]
umc2ourms2_nearest = pyresample.kd_tree.resample_nearest(orig_def,umc2ourms2 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=arange(0,5,.1)
fig,ax,cbar=MapContourg(targ_def0,umc2ourms2_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,4),
setover='darkred',
setunder='darkblue',
title="Run 024 ${(U-c)}^2 \over u_{rms}^2$")
#customize colorbar ticks
yticks=[0,2,4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,8])
pylab.xticks([0,4,8]);
umc2ourms2 = nc25.variables['UMCSQ_OVR_URMSSQ'][0,0,:,:]
umc2ourms2_nearest = pyresample.kd_tree.resample_nearest(orig_def,umc2ourms2 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=arange(0,5,.1)
fig,ax,cbar=MapContourg(targ_def0,umc2ourms2_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,4),
setover='darkred',
setunder='darkblue',
title="Run 025 ${(U-c)}^2 \over u_{rms}^2$")
#customize colorbar ticks
yticks=[0,2,4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,8])
pylab.xticks([0,4,8]);
umc2ourms2_18 = nc18.variables['UMCSQ_OVR_URMSSQ'][0,0,:,:]
umc2ourms2_18_nearest = pyresample.kd_tree.resample_nearest(orig_def,umc2ourms2_18 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=arange(0,5,.1)
fig,ax,cbar=MapContourg(targ_def0,umc2ourms2_18_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,4),
setover='darkred',
setunder='darkblue',
title="Control run 018 ${(U-c)}^2 \over u_{rms}^2$")
#customize colorbar ticks
yticks=[0,2,4]
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,8])
pylab.xticks([0,4,8]);
\(\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad {|u-c|^2 \over u_{rms}^2} \) Bates et al
# <!-- collapse=True -->
bates_uminusc_sq_ovr_urms_sq =Image(filename=basedir+'/steering/Bates_suppress.jpg')
display(bates_uminusc_sq_ovr_urms_sq )
\(\color{green}{\quad Suppression \quad factor = {1 \over (1 + b1 * |\bar u - c|^2 /u_{rms (z=0)}^2 )}}\)
NOTES:
- \(c = max(- \beta * L_{eddy}^2,-20)\)
- \(u_{rms} = max(u_{rms},5.)\)
- \(u_{rms}^2\) is a surface value
- \(b1\) (scaling constant) = 4. (case23) , 1. (case24), or 1. (case25)
\(\quad\quad\quad\quad\quad\quad\quad\) Suppression Factor CESM
# <!-- collapse=True -->
supp23 = nc23.variables['SUPP'][0,0,:,:]
supp23_nearest = pyresample.kd_tree.resample_nearest(orig_def,supp23 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=np.linspace(0,1,30)
norm=matplotlib.colors.Normalize()
fig,ax,cbar=MapContourg(targ_def0,supp23_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 023 Suppression (limiting $u_{rms}$ to 5cm/s)= ${1 \over (1 + b1 * | u - c|^2 /(u_{rms (z=0)}^2)}$ ")
#customize colorbar ticks
yticks=np.linspace(0, 1, 6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.8])
pylab.xticks([0,.25,.5,.75]);
supp24 = nc24.variables['SUPP'][0,0,:,:]
supp24_nearest = pyresample.kd_tree.resample_nearest(orig_def,supp24 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=np.linspace(0,1,30)
norm=matplotlib.colors.Normalize()
fig,ax,cbar=MapContourg(targ_def0,supp24_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 024 Suppression (limiting $u_{rms}$ to 5cm/s)= ${1 \over (1 + b1 * | u - c|^2 /(u_{rms (z=0)}^2)}$ ")
#customize colorbar ticks
yticks=np.linspace(0, 1, 6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.8])
pylab.xticks([0,.25,.5,.75]);
supp25 = nc25.variables['SUPP'][0,0,:,:]
supp25_nearest = pyresample.kd_tree.resample_nearest(orig_def,supp25 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=np.linspace(0,1,30)
norm=matplotlib.colors.Normalize()
fig,ax,cbar=MapContourg(targ_def0,supp25_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 025 Suppression (limiting $u_{rms}$ to 5cm/s)= ${1 \over (1 + b1 * | u - c|^2 /(u_{rms (z=0)}^2)}$ ")
#customize colorbar ticks
yticks=np.linspace(0, 1, 6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.8])
pylab.xticks([0,.25,.5,.75]);
supp18 = nc18.variables['SUPP'][0,0,:,:]
supp18_nearest = pyresample.kd_tree.resample_nearest(orig_def,supp18 ,
targ_def0, radius_of_influence=500000, fill_value=None)
clevs=np.linspace(0,1,30)
norm=matplotlib.colors.Normalize()
fig,ax,cbar=MapContourg(targ_def0,supp18_nearest,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Control Run 018 Suppression (limiting $u_{rms}$ to 5cm/s)= ${1 \over (1 + b1 * | u - c|^2 /(u_{rms (z=0)}^2)}$ ")
#customize colorbar ticks
yticks=np.linspace(0, 1, 6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,.8])
pylab.xticks([0,.25,.5,.75]);
\(\quad\quad\quad\quad\quad\quad\quad\) Suppression Factor Bates
# <!-- collapse=True -->
bates_suppression =Image(filename=basedir+'/steering/bates2013_suppression.png')
display(bates_suppression )
\(\quad\quad\quad\quad\quad\quad\quad\) Suppression Factor (Zonal x depth) CESM
z_t= ncregrid23.variables['z_t'][:]
latregrid=ncregrid23.variables['lat'][:]
lonregrid=ncregrid23.variables['lon'][:]
lon=lonregrid
suppregrid23= ncregrid23.variables['SUPP'][0,:,:,:]
suppregridz23=suppregrid23.mean(axis=2)
fig=plt.figure(figsize=(9,5))
clevs=np.linspace(0,1,100,endpoint=True)
title="Run 023 Suppression factor (custom contours max = %.1f/min = %.1f) "%(suppregridz23.max(),suppregridz23.min())
ax,cs,cbar=PlotOcnZonal(xdata=latregrid,
ydata=z_t/100.,
data=suppregridz23,
title=title,
levels1=clevs)
# Customize y tick lables
yticks=[0,.2,.4,.6,.8,1.]
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('fraction')
suppregrid24= ncregrid24.variables['SUPP'][0,:,:,:]
suppregridz24=suppregrid24.mean(axis=2)
title="Run 024 Suppression factor (custom contours max = %.1f/min = %.1f) "%(suppregridz24.max(),suppregridz24.min())
fig=plt.figure(figsize=(9,5))
clevs=np.linspace(0,1,100,endpoint=True)
ax,cs,cbar=PlotOcnZonal(xdata=latregrid,
ydata=z_t/100.,
data=suppregridz24,
title=title,
levels1=clevs)
# Customize y tick lables
yticks=[0,.2,.4,.6,.8,1.]
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('fraction')
suppregrid25= ncregrid25.variables['SUPP'][0,:,:,:]
suppregridz25=suppregrid25.mean(axis=2)
title="Run 025 Suppression factor (custom contours max = %.1f/min = %.1f) "%(suppregridz25.max(),suppregridz25.min())
fig=plt.figure(figsize=(9,5))
clevs=np.linspace(0,1,100,endpoint=True)
ax,cs,cbar=PlotOcnZonal(xdata=latregrid,
ydata=z_t/100.,
data=suppregridz25,
title=title,
levels1=clevs)
# Customize y tick lables
yticks=[0,.2,.4,.6,.8,1.]
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('fraction')
suppregrid18= ncregrid18.variables['SUPP'][0,:,:,:]
suppregridz18=suppregrid18.mean(axis=2)
title="Control Run 018 Suppression factor (custom contours max = %.1f/min = %.1f) "%(suppregridz18.max(),suppregridz18.min())
fig=plt.figure(figsize=(9,5))
clevs=np.linspace(0,1,100,endpoint=True)
ax,cs,cbar=PlotOcnZonal(xdata=latregrid,
ydata=z_t/100.,
data=suppregridz18,
title=title,
levels1=clevs)
# Customize y tick lables
yticks=[0,.2,.4,.6,.8,1.]
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('fraction')
\(\quad\quad\quad\quad\quad\quad\quad\) Suppression Factor (Zonal x depth) Bates
# <!-- collapse=True -->
urms_bates7=Image(filename=basedir+'/steering/Bates-Tulloch-etal-2014-007.jpg')
display(urms_bates7 )
\(\color{green}{\quad Parameterizing \quad Eddy \quad Diffusivity \quad} (\color{red}{K})\)
NOTES:
- \(\color{red}{K}=u_{rms}∗{\Gamma * L_{eddy} \over (1 + b1 * |u_{mean} - c|^2 /u_{rms}^2 (z=0)}\)
\(\quad\quad\quad\quad\quad\quad\quad\) Eddy Diffusivity (K) CESM
# <!-- collapse=True -->
###gamma=.35
###############GAMMA bumped up for tuning #########################
###gamma=1.75
###b1=4.
###regrid2rect(basedir+'/steering/g.e11.GIAF.T62_gx1v6.steer.017.pop.h.nday1.0249.nc',basedir+'/steering/g.e11.GIAF.T62_gx1v6.steer.017.regrid.nc',clobber=True)
###ncregrid = Dataset(basedir+'/steering/g.e11.GIAF.T62_gx1v6.steer.017.regrid.nc')
kvertsrf23= ncregrid23.variables['KVERT'][0,0,:,:]*1.e-4
clevs=np.linspace(0,1.e4,40)
fig,ax,cbar=MapContourg(targ_def0,kvertsrf23,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 023 Eddy diffusivity $K$ (max = %.1f/min = %.1f) "%(kvertsrf23.max(),kvertsrf23.min()))
#customize colorbar ticks
#cbar.set_ticks([1,3,1e1,3e1,1e2,3e2,1e3,3e3,1e4,])
yticks=np.linspace(0, 10000,6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,11e3])
pylab.xticks([0,5e3,10e3]);
kvertsrf24= ncregrid24.variables['KVERT'][0,0,:,:]*1.e-4
clevs=np.linspace(0,1.e4,40)
fig,ax,cbar=MapContourg(targ_def0,kvertsrf24,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 024 Eddy diffusivity $K$ (max = %.1f/min = %.1f) "%(kvertsrf24.max(),kvertsrf24.min()))
#customize colorbar ticks
#cbar.set_ticks([1,3,1e1,3e1,1e2,3e2,1e3,3e3,1e4,])
yticks=np.linspace(0, 10000,6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,11e3])
pylab.xticks([0,5e3,10e3]);
kvertsrf25= ncregrid25.variables['KVERT'][0,0,:,:]*1.e-4
clevs=np.linspace(0,1.e4,40)
fig,ax,cbar=MapContourg(targ_def0,kvertsrf25,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Run 025 Eddy diffusivity $K$ (max = %.1f/min = %.1f) "%(kvertsrf25.max(),kvertsrf25.min()))
#customize colorbar ticks
#cbar.set_ticks([1,3,1e1,3e1,1e2,3e2,1e3,3e3,1e4,])
yticks=np.linspace(0, 10000,6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,11e3])
pylab.xticks([0,5e3,10e3]);
kvertsrf18= ncregrid18.variables['KVERT'][0,0,:,:]*1.e-4
clevs=np.linspace(0,1.e4,40)
fig,ax,cbar=MapContourg(targ_def0,kvertsrf18,
addzonal=True,
levels1=clevs,
figsize=(14,5),
title="Control Run 018 Eddy diffusivity $K$ (max = %.1f/min = %.1f) "%(kvertsrf18.max(),kvertsrf18.min()))
#customize colorbar ticks
#cbar.set_ticks([1,3,1e1,3e1,1e2,3e2,1e3,3e3,1e4,])
yticks=np.linspace(0, 10000,6)
cbar.set_ticks(yticks)
#customize zonal ticks
pylab.xlim([0,11e3])
pylab.xticks([0,5e3,10e3]);
\(\quad\quad\quad\quad\quad\quad\quad\) Eddy Diffusivity (K) Bates
# <!-- collapse=True -->
bates_k =Image(filename=basedir+'/steering/bates2013_K.png')
display(bates_k )
\(\quad\quad\quad\quad\quad\quad\quad\) (Zonal x Depth) CESM
\(\quad\quad\quad\quad\quad\quad\quad\quad\quad\) K limited to (100 < K < 10000)
# <!-- collapse=True -->
###ncregrid = Dataset(basedir+'/steering/g.e11.GIAF.T62_gx1v6.steer.017.regrid.nc')
z_t= ncregrid23.variables['z_t'][:]
latregrid=ncregrid23.variables['lat'][:]
lonregrid=ncregrid23.variables['lon'][:]
lon=lonregrid
kvert23= ncregrid23.variables['KVERT'][0,:,:,:]
kvertz23=kvert23.mean(axis=2)/1.e4
if False:
title="Run 023 Eddy diffusivity $K$ (Linear Scale max = %.1f/min = %.1f) "%(kvertz23.max(),kvertz23.min())
clevs=np.linspace(0,2500,100,endpoint=True)
clevs2=[500,1000,1500]
cbticks=[0,500,1000,1500,2000,2500]
fig=plt.figure(figsize=(9,5))
ax,cs,cbar=PlotOcnZonal(xdata=latregrid,
ydata=z_t/100.,
data=kvertz23,
data2=kvertz23,
title=title,
levels1=clevs,
levels2=clevs2)
# Customize y tick lables
cbar.set_ticks(cbticks)
cbar.set_ticklabels(cbticks)
cbar.set_label('fraction')
fig,ax,cbar=plotzonalocn(latregrid, z_t, kvertz23,
levels1=clevs,
levels2=clevs,
# equalcontourscale=True,
figsize=(10.5,6),
title="Run 023 Eddy diffusivity $K$ (Linear Scale max = %.1f/min = %.1f) "%(kvertz23.max(),kvertz23.min()))
# Add axis labels and plot title
levs=[500,1000,1500]
cs=ax.contour(latregrid, z_t, kvertz23,levels=levs,colors='w',linewidths=2)
plt.xlabel('Latitude')
plt.ylabel('Depth (cm)')
plt.clabel(cs, inline=1, fontsize=15)
# Customize y tick lables
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('m**2/s')
kvert24= ncregrid24.variables['KVERT'][0,:,:,:]
kvertz24=kvert24.mean(axis=2)/1.e4
clevs=np.linspace(0,2500,100,endpoint=True)
yticks=[0,500,1000,1500,2000,2500]
fig,ax,cbar=plotzonalocn(latregrid, z_t, kvertz24,
levels1=clevs,
levels2=clevs,
# equalcontourscale=True,
figsize=(10.5,6),
title="Run 024 Eddy diffusivity $K$ (Linear Scale max = %.1f/min = %.1f) "%(kvertz24.max(),kvertz24.min()))
# Add axis labels and plot title
levs=[500,1000,1500]
cs=ax.contour(latregrid, z_t, kvertz24,levels=levs,colors='w',linewidths=2)
plt.xlabel('Latitude')
plt.ylabel('Depth (cm)')
plt.clabel(cs, inline=1, fontsize=15)
# Customize y tick lables
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('m**2/s')
kvert25= ncregrid25.variables['KVERT'][0,:,:,:]
kvertz25=kvert25.mean(axis=2)/1.e4
clevs=np.linspace(0,2500,100,endpoint=True)
yticks=[0,500,1000,1500,2000,2500]
fig,ax,cbar=plotzonalocn(latregrid, z_t, kvertz25,
levels1=clevs,
levels2=clevs,
# equalcontourscale=True,
figsize=(10.5,6),
title="Run 025 Eddy diffusivity $K$ (Linear Scale max = %.1f/min = %.1f) "%(kvertz25.max(),kvertz25.min()))
# Add axis labels and plot title
levs=[500,1000,1500]
cs=ax.contour(latregrid, z_t, kvertz25,levels=levs,colors='w',linewidths=2)
plt.xlabel('Latitude')
plt.ylabel('Depth (cm)')
plt.clabel(cs, inline=1, fontsize=15)
# Customize y tick lables
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('m**2/s')
kvert18= ncregrid18.variables['KVERT'][0,:,:,:]
kvertz18=kvert18.mean(axis=2)/1.e4
clevs=np.linspace(0,2500,100,endpoint=True)
yticks=[0,500,1000,1500,2000,2500]
fig,ax,cbar=plotzonalocn(latregrid, z_t, kvertz18,
levels1=clevs,
levels2=clevs,
# equalcontourscale=True,
figsize=(10.5,6),
title="Control Run 018 Eddy diffusivity $K$ (Linear Scale max = %.1f/min = %.1f) "%(kvertz18.max(),kvertz18.min()))
# Add axis labels and plot title
levs=[500,1000,1500]
cs=ax.contour(latregrid, z_t, kvertz18,levels=levs,colors='w',linewidths=2)
plt.xlabel('Latitude')
plt.ylabel('Depth (cm)')
plt.clabel(cs, inline=1, fontsize=15)
# Customize y tick lables
cbar.set_ticks(yticks)
cbar.set_ticklabels(yticks)
cbar.set_label('m**2/s')
Here is the Bate's version
urms_bates8=Image(filename=basedir+'/steering/Bates-Tulloch-etal-2014-008.jpg')
display(urms_bates8)
pCFC 11 biases at year 297
GLODAP vs CESM control and New Steering Param (Exp018)
%run steering_setup ;
from enum import Enum
class Basins(Enum):
Indian=2
Atlantic=3
Pacific=1
class Exps(Enum):
GLODAP=1
Exp112=2
Exp018=3
# Exp024=6
# Exp025=7
basinnames=Basins.__members__.keys()
#expnames=["GLODAP", "c112-GLODAP","Exp018-GLODAP","Exp023-Exp018","Exp024-Exp018","Exp025-Exp018"]
expnames=["GLODAP","c112-GLODAP (control)","Exp018-GLODAP"]
#expnames=Exps.__members__.keys()
pcfcname='pCFC11'
latz=ncglodap.variables['lat_t'][:]
zmid= nccfc18a.variables['z_t'][:]
fig=plt.figure(figsize=(15,8))
#subplots_adjust(bottom=.2)
fig.suptitle('pCFC11 biases', fontsize=14, fontweight='bold')
yticks=np.arange(0,300,50)
cols=3
rows=3
clevs2=[23,24,25,26,26.5,26.75,27,27.25,27.5,27.75,28]
for b in Basins:
basinno=b.value
ctrldata = ncglodap.variables[pcfcname][basinno,:,:]
expdata18 = nccfc18a.variables[pcfcname][0,basinno,:,:]
# ctrlpddata = ncglodap.variables['PD'][basinno,:,:]
for e in Exps:
caseno=e.value
subplotnum=(basinno-1)*cols+caseno
if caseno==1:
plotdata = ctrldata
pddata = None
clevs=np.arange(0,300,1)
cbar_title='pCFC [pAtm]'
if caseno==2:
expdata = nccfc112a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc112a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-75,75,5)
cbar_title='pCFC bias [pAtm]'
if caseno==3:
expdata = nccfc18a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc18a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-75,75,5)
cbar_title='pCFC bias [pAtm]'
if (True):
if caseno==5:
expdata = nccfc23.variables[pcfcname][0,basinno,:,:]
pddata = nccfc23.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==5:
expdata = nccfc24.variables[pcfcname][0,basinno,:,:]
pddata = nccfc24.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==6:
expdata = nccfc25.variables[pcfcname][0,basinno,:,:]
pddata = nccfc25.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
ax,cs,cbar=PlotOcnZonal(latz, zmid/100., plotdata,data2=pddata,
subplotnum=subplotnum,
rows=rows,
cols=cols,
column_label=expnames,
row_label = basinnames,
colorbar_title=cbar_title,
levels1=clevs,
levels2=clevs2)
pCFC 11 biases in sensitivity experiments 23, 24 and 25
from enum import Enum
class Basins(Enum):
Indian=2
Atlantic=3
Pacific=1
class Exps(Enum):
Exp018=1
Exp023=2
Exp024=3
Exp025=4
basinnames=Basins.__members__.keys()
#expnames=["GLODAP", "c112-GLODAP","Exp018-GLODAP","Exp023-Exp018","Exp024-Exp018","Exp025-Exp018"]
expnames=["Exp018-GLODAP","Exp023-GLODAP","Exp024-GLODAP","Exp025-GLODAP"]
#expnames=Exps.__members__.keys()
pcfcname='pCFC11'
latz=ncglodap.variables['lat_t'][:]
zmid= nccfc18a.variables['z_t'][:]
fig=plt.figure(figsize=(15,8))
#subplots_adjust(bottom=.2)
fig.suptitle('pCFC11 biases', fontsize=14, fontweight='bold')
yticks=np.arange(0,300,50)
cols=4
rows=3
clevs2=[23,24,25,26,26.5,26.75,27,27.25,27.5,27.75,28]
for b in Basins:
basinno=b.value
ctrldata = ncglodap.variables[pcfcname][basinno,:,:]
expdata18 = nccfc18a.variables[pcfcname][0,basinno,:,:]
# ctrlpddata = ncglodap.variables['PD'][basinno,:,:]
for e in Exps:
caseno=e.value
subplotnum=(basinno-1)*cols+caseno
if caseno==1:
expdata = nccfc18a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc18a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-75,75,.1)
cbar_title='pCFC bias [pAtm]'
if (True):
if caseno==2:
expdata = nccfc23.variables[pcfcname][0,basinno,:,:]
pddata = nccfc23.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-75,75,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==3:
expdata = nccfc24.variables[pcfcname][0,basinno,:,:]
pddata = nccfc24.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-75,75,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==4:
expdata = nccfc25.variables[pcfcname][0,basinno,:,:]
pddata = nccfc25.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-75,75,.1)
cbar_title='pCFC bias [pAtm]'
ax,cs,cbar=PlotOcnZonal(latz, zmid/100., plotdata,data2=pddata,
subplotnum=subplotnum,
rows=rows,
cols=cols,
column_label=expnames,
row_label = basinnames,
colorbar_title=cbar_title,
levels1=clevs,
levels2=clevs2)
pCFC 12 biases at year 297
GLODAP vs CESM control and New Steering Param (Exp018)
from enum import Enum
class Basins(Enum):
Indian=2
Atlantic=3
Pacific=1
class Exps(Enum):
GLODAP=1
Exp112=2
Exp018=3
# Exp024=6
# Exp025=7
basinnames=Basins.__members__.keys()
#expnames=["GLODAP", "c112-GLODAP","Exp018-GLODAP","Exp023-Exp018","Exp024-Exp018","Exp025-Exp018"]
expnames=["GLODAP","c112-GLODAP (control)","Exp018-GLODAP"]
#expnames=Exps.__members__.keys()
pcfcname='pCFC12'
latz=ncglodap.variables['lat_t'][:]
zmid= nccfc18a.variables['z_t'][:]
fig=plt.figure(figsize=(15,8))
#subplots_adjust(bottom=.2)
fig.suptitle('pCFC12 biases', fontsize=14, fontweight='bold')
yticks=np.arange(0,300,50)
cols=3
rows=3
clevs2=[23,24,25,26,26.5,26.75,27,27.25,27.5,27.75,28]
for b in Basins:
basinno=b.value
ctrldata = ncglodap.variables[pcfcname][basinno,:,:]
expdata18 = nccfc18a.variables[pcfcname][0,basinno,:,:]
# ctrlpddata = ncglodap.variables['PD'][basinno,:,:]
for e in Exps:
caseno=e.value
subplotnum=(basinno-1)*cols+caseno
if caseno==1:
plotdata = ctrldata
pddata = None
clevs=np.arange(0,600,1)
cbar_title='pCFC [pAtm]'
if caseno==2:
expdata = nccfc112a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc112a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-200,200,5)
cbar_title='pCFC bias [pAtm]'
if caseno==3:
expdata = nccfc18a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc18a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-200,200,5)
cbar_title='pCFC bias [pAtm]'
if (True):
if caseno==5:
expdata = nccfc23.variables[pcfcname][0,basinno,:,:]
pddata = nccfc23.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==5:
expdata = nccfc24.variables[pcfcname][0,basinno,:,:]
pddata = nccfc24.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==6:
expdata = nccfc25.variables[pcfcname][0,basinno,:,:]
pddata = nccfc25.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-expdata18
# clevs=np.arange(-400,155,5)
clevs=np.arange(-20,20,.1)
cbar_title='pCFC bias [pAtm]'
ax,cs,cbar=PlotOcnZonal(latz, zmid/100., plotdata,data2=pddata,
subplotnum=subplotnum,
rows=rows,
cols=cols,
column_label=expnames,
row_label = basinnames,
colorbar_title=cbar_title,
levels1=clevs,
levels2=clevs2)
pCFC 12 biases in sensitivity experiments 23, 24 and 25
from enum import Enum
class Basins(Enum):
Indian=2
Atlantic=3
Pacific=1
class Exps(Enum):
Exp018=1
Exp023=2
Exp024=3
Exp025=4
basinnames=Basins.__members__.keys()
#expnames=["GLODAP", "c112-GLODAP","Exp018-GLODAP","Exp023-Exp018","Exp024-Exp018","Exp025-Exp018"]
expnames=["Exp018-GLODAP","Exp023-GLODAP","Exp024-GLODAP","Exp025-GLODAP"]
#expnames=Exps.__members__.keys()
pcfcname='pCFC12'
latz=ncglodap.variables['lat_t'][:]
zmid= nccfc18a.variables['z_t'][:]
fig=plt.figure(figsize=(15,8))
#subplots_adjust(bottom=.2)
fig.suptitle('pCFC12 biases', fontsize=14, fontweight='bold')
yticks=np.arange(0,300,50)
cols=4
rows=3
clevs2=[23,24,25,26,26.5,26.75,27,27.25,27.5,27.75,28]
for b in Basins:
basinno=b.value
ctrldata = ncglodap.variables[pcfcname][basinno,:,:]
expdata18 = nccfc18a.variables[pcfcname][0,basinno,:,:]
# ctrlpddata = ncglodap.variables['PD'][basinno,:,:]
for e in Exps:
caseno=e.value
subplotnum=(basinno-1)*cols+caseno
if caseno==1:
expdata = nccfc18a.variables[pcfcname][0,basinno,:,:]
pddata = nccfc18a.variables['PD'][0,basinno,:,:]*1000-1000.
plotdata = expdata-ctrldata
clevs=np.arange(-200,200,.1)
cbar_title='pCFC bias [pAtm]'
if (True):
if caseno==2:
expdata = nccfc23.variables[pcfcname][0,basinno,:,:]
pddata = nccfc23.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-200,200,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==3:
expdata = nccfc24.variables[pcfcname][0,basinno,:,:]
pddata = nccfc24.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-200,200,.1)
cbar_title='pCFC bias [pAtm]'
if caseno==4:
expdata = nccfc25.variables[pcfcname][0,basinno,:,:]
pddata = nccfc25.variables['PD'][0,basinno,:,:]*1000-1000.
# plotdata = expdata-ctrldata
plotdata = expdata-ctrldata
# clevs=np.arange(-400,155,5)
clevs=np.arange(-200,200,.1)
cbar_title='pCFC bias [pAtm]'
ax,cs,cbar=PlotOcnZonal(latz, zmid/100., plotdata,data2=pddata,
subplotnum=subplotnum,
rows=rows,
cols=cols,
column_label=expnames,
row_label = basinnames,
colorbar_title=cbar_title,
levels1=clevs,
levels2=clevs2)